/*
 * Copyright (c) 2017. All  rights reserved.
 * 项目名：microservice-base
 * 文件名：BaseService.java
 * Date  ：17-10-11 下午4:23
 * Author：abin
 *
 */

package com.microservice.base.service;

import com.microservice.base.vo.searchVo.SearchVo;

import java.util.List;

/**
 * BaseSV
 *
 * @author Admui
 */
public interface BaseSV<T> {

    /**
     * <p>
     * 保存
     * </p>
     *
     * @param t 要保存的对象
     */
    void save(T t);

    /**
     * <p>
     * 批量保存
     * </p>
     *
     * @param list 要保存的对象集合
     */
    void saveBatch(List<T> list);

    /**
     * <p>
     * 根据id删除
     * </p>
     *
     * @param id 要删除的对象id
     */
    void delete(String id);

    /**
     * <p>
     * 根据ids删除
     * </p>
     *
     * @param ids 要删除的对象ids
     */
    void deleteBatch(String[] ids);

    /**
     * <p>
     * 更新
     * </p>
     *
     * @param t 要更新的对象
     */
    int update(T t);

    /**
     * <p>
     * 根据查询对象查询
     * </p>
     *
     * @param searchVo 查询对象
     * @return 符合条件的对象集合
     */
    List<T> query(SearchVo searchVo);

    /**
     * <p>
     * 根据id查询
     * </p>
     *
     * @param id 对象id
     * @return 符合条件的对象
     */
    T get(String id);

    /**
     * <p>
     * 根据查询对象查询数量
     * </p>
     *
     * @param searchVo 查询对象
     * @return 符合条件的对象数量
     */
    int getCount(SearchVo searchVo);

    /**
     * <p>
     * 查询全部
     * </p>
     *
     * @return 对象集合
     */
    List<T> queryAll();

}
